import { get, post, del } from '@/utils/request'

/**
 * 获取文章分页列表
 * @param {string} categoryId 分类ID，使用 'all' 表示所有分类
 * @param {number} pageNum 当前页码
 * @param {number} pageSize 每页数量
 * @returns {Promise} 文章分页数据
 */
export function getArticlePage(categoryId, pageNum = 1, pageSize = 10) {
  return get(`/api/article/page`, { categoryId, pageNum, pageSize })
}

/**
 * 获取随机文章列表
 * @param {number} count 获取的文章数量
 * @returns {Promise} 随机文章列表
 */
export function getRandomArticles(count = 4) {
  return get(`/api/article/random`, { count })
}

/**
 * 获取推荐文章列表
 * @param {number} count 获取的文章数量，默认为4篇
 * @returns {Promise} 推荐文章列表
 */
export function getRecommendArticles() {
  return get(`/api/article/recommend`)
}

/**
 * 获取归档文章列表，按时间归类
 * @param {string} year 可选，筛选特定年份的文章
 * @returns {Promise} 按时间归档的文章列表
 */
export function getArticleArchive(year = null) {
  return get(`/api/article/archive`, { year })
}

/**
 * 获取文章详情
 * @param {string} id 文章ID
 * @returns {Promise} 文章详情数据
 */
export function getArticleDetail(id) {
  return get(`/api/article/details`, { id })
}

/**
 * 获取文章作者卡片信息
 * @param {string} id 文章ID
 */
export function getArticleCardInfo(id) {
  return get(`/api/article/getCardInfo`, { id })
}

/**
 * 点赞内容（文章/评论）
 * @param {string} contentId 被点赞内容id
 * @param {0|1} likeType 点赞类型 0-文章 1-评论
 */
export function likeContent(contentId, likeType = 0) {
  return post(`/api/article/like`, { contentId, likeType })
}

/**
 * 取消点赞内容（文章/评论）
 * @param {string} contentId 被点赞内容id
 * @param {0|1} likeType 点赞类型 0-文章 1-评论
 */
export function cancelLikeContent(contentId, likeType = 0) {
  return post(`/api/article/cancelLike`, { contentId, likeType })
}

/**
 * 获取文章评论列表
 * @param {string} targetId 目标ID（文章ID）
 * @param {string} targetType 目标类型
 * @param {number} pageNum 页码，默认为1
 * @param {number} pageSize 每页数量，默认为10
 * @returns {Promise} 评论列表数据
 */
export function getArticleComments(targetId, targetType, pageNum = 1, pageSize = 10) {
  return get(`/api/article/getComments`, { targetId, targetType, pageNum, pageSize })
}

/**
 * 添加文章评论
 * @param {Object} commentData 评论数据，包含targetId(文章ID)、nickname、email、content等字段
 * @returns {Promise} 添加结果
 */
export function addArticleComment(commentData) {
  return post(`/api/article/addComment`, commentData)
}

/**
 * 点赞或取消点赞评论
 * @param {string} commentId 评论ID
 * @param {boolean} like 是否点赞，true为点赞，false为取消点赞
 * @returns {Promise} 更新结果
 */
export function likeComment(commentId, like) {
  if (like) {
    return post(`/api/article/like/${commentId}/1`)
  } else {
    return del(`/api/article/like/${commentId}/1`)
  }
}

/**
 * 获取文章时间轴数据
 * @param {string} year 可选，筛选特定年份的文章
 * @returns {Promise} 时间轴格式的文章列表
 */
export function getArticleTimeline(year = null) {
  return get(`/api/article/timeline`, year ? { year } : {})
}
